package controller;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Locale;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import BEAN.*;
import TO.*;
import util.*;



public class BibliotecaController extends HttpServlet {
	
		/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

		public void doPost (HttpServletRequest request, HttpServletResponse response){
			
				performTask(request, response);
		}
		
		public void doGet (HttpServletRequest request, HttpServletResponse response){
			
				performTask(request, response);
		}
		
		public void performTask(HttpServletRequest request, HttpServletResponse response)
		{
			String url = "/login.jsp";
			HttpSession sessao;
			
			
			
			sessao = request.getSession(true);
			String locale = request.getParameter("locale");
			
			if(locale != null){
				String[] idioma = locale.split("_");
				Locale local = new Locale(idioma[0], idioma[1]);
				sessao.setAttribute("local", local);
			}
			else if (sessao.getAttribute("local")==null){
				Locale local = new Locale("pt","BR");
				sessao.setAttribute("local", local);
			}
			
			
			
			
			String corrente = request.getParameter("corrente");
			int icorr=0;
			if (corrente != null) icorr = Integer.parseInt(corrente);
			try
			{
				switch(icorr)
				{
					case 0:	// Logar no Sistema
						UsuarioBean usuarioLoginBean = new UsuarioBean();
						usuarioLoginBean.setNome(request.getParameter("prontuario"));
						usuarioLoginBean.setSenha(request.getParameter("senha"));
						
						ArrayList<String> erroLogin = Validate.validaLogin(usuarioLoginBean);
						if (!erroLogin.isEmpty())
						{
							url= "/login.jsp";
							sessao.setAttribute("erro", "teste");
						}
						else
						{
							UsuarioTO usuarioTO = Convert.usuarioBeanTO(usuarioLoginBean);
							UsuarioFacade usuarioFacade = new UsuarioFacade(usuarioTO);
							UsuarioTO usuario = usuarioFacade.logar();
							if (usuario != null) {
								usuarioLoginBean = Convert.usuarioTOBean(usuario);
								sessao = request.getSession(true);
								sessao.setAttribute("usuario", usuarioLoginBean);
								if (usuario.getCargo() == 0) {
									url = "/emprestimo.jsp";
								} else {
									Collection<LivroBean> livros = LivroFacade.consultar();
									Collection<LivroBean> livrosBean = new ArrayList<LivroBean>();
									for (LivroBean livro : livros) {
										LivroBean livroBean = new LivroBean();
										livroBean = Convert.livroTOBean(livro);
										livrosBean.add(livroBean);
									}
									
									sessao.setAttribute("livros", livrosBean);
									url= "/listar-livro.jsp";
								}
							} else {
								url = "/login.jsp";
							}
						};
						break;
					case 1:		// Cadastrar Usuario
						sessao = request.getSession(true);
						if (sessao == null){
							url = "/login.jsp";
						}
						else{
							UsuarioBean usuarioBean = new UsuarioBean();
							
							usuarioBean.setProntuario(request.getParameter("prontuario"));
							usuarioBean.setSenha(request.getParameter("senha"));
							usuarioBean.setNome(request.getParameter("nome"));
							usuarioBean.setTipo(request.getParameter("tipo"));							
							usuarioBean.setEndereco(request.getParameter("endereco"));
							usuarioBean.setCidade(request.getParameter("cidade"));
							usuarioBean.setEstado(request.getParameter("estado"));
							usuarioBean.setCep(request.getParameter("cep"));
							usuarioBean.setTelefone(request.getParameter("telefone"));
							usuarioBean.setEmail(request.getParameter("email"));
							usuarioBean.setCelular(request.getParameter("celular"));
							
							ArrayList<String> erro = Validate.usuarioBean(usuarioBean);
							
							if (erro.isEmpty()==true){
								
								UsuarioTO usuarioTO = Convert.usuarioBeanTO(usuarioBean);
								UsuarioFacade usuarioFacade = new UsuarioFacade(usuarioTO);
								if(usuarioFacade.inserir() > 0){
									erro.add("Gravado com sucesso");
									
								}
								else{
									erro.add("Falha ao gravar dados no Banco de Dados");
								}
								
							}
							
							sessao.setAttribute("erro", erro);
							url = "/cadastrar-usuario.jsp";
							
						}
						
						
						break;
					case 2:		// Consultar Usuario
						sessao = request.getSession(false);
						if (sessao == null){
							url = "/login.jsp";
						}
						else{
							url = "/listar-usuario.jsp";	
							
						}
						
						
						break;
				}
				getServletContext().getRequestDispatcher(url).forward(request,response);
			}catch (Exception e) { 
				System.out.println("BibliotecaServlet falhou: ");
				e.printStackTrace();
			}
		}
		
}
